package com.example.myblog_sm.common;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

/**
 * 密码加密工具
 */
public class PassWordUtils {
    //加密操作
    public static String encrypt(String password){
        //1.盐值
        String salt = UUID.randomUUID().toString().replace("-","");
        //2.盐值+密码进行md5加密
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        //3.进行返回
        return salt+"$"+finalPassword;
    }
    //解密操作

    /**
     * 加盐验证
     * @param password 待验证密码
     * @param dbpassword 数据库中的密码
     * @return
     */
    public static boolean  decrypt(String password,String dbpassword){
        if(!StringUtils.hasLength(password) || !StringUtils.hasLength(dbpassword)
                || dbpassword.length()!=65){
            return false;
        }
        //1.得到盐值
        String[] strings = dbpassword.split("\\$");
        if(strings.length != 2){
            return false;
        }
        //盐值
        String salt = strings[0];
        //最终正确密码
        String dbFinalPassword = strings[1];
        //加密待验证密码
        String FinalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        if(dbFinalPassword.equals(FinalPassword)){
            return true;
        }
        return false;
    }
}
